package com.yxinsur.imc.business.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yxinsur.imc.business.domain.ImcContractExpenseExpression;
import com.yxinsur.imc.business.domain.ImcContractVariableStrategy;
import com.yxinsur.imc.business.form.ContractExpenseForm;
import com.yxinsur.imc.business.vo.ContractExpenseVo;
import com.yxinsur.imc.business.vo.ImcContractVariableVo;
import com.yxinsur.imc.common.core.domain.AjaxResult;

import java.util.List;

/**
 * 协议-费用科目对应口径（暨口径达式配置）Service接口
 *
 * @author imc
 * @date 2021-07-28
 */
public interface IImcContractExpenseExpressionService extends IService<ImcContractExpenseExpression> {
    /**
     * 查询协议费用科目口径列表
     *
     * @param id 协议费用科目ID
     * @return 协议费用科目口径列表
     */
    ContractExpenseVo listExpenseExpressionByContractExpenseId(Long id);

    /**
     * 生成&检测口径
     *
     * @param contractExpenseForm ContractExpenseForm
     * @return 结果
     */
    AjaxResult checkExpenseExpression(ContractExpenseForm contractExpenseForm);

    /**
     * 新增协议费用科目
     *
     * @param contractExpenseForm ContractExpenseForm
     * @return 结果
     */
    AjaxResult insertImcContractExpenseExpression(ContractExpenseForm contractExpenseForm);

    /**
     * 修改协议费用科目
     *
     * @param contractExpenseForm ContractExpenseForm
     * @return 结果
     */
    AjaxResult updateImcContractExpenseExpression(ContractExpenseForm contractExpenseForm);

    /**
     * 查询口径变量
     *
     * @return List<ImcContractVariableVo>
     */
    List<ImcContractVariableVo> listVariable();

    /**
     * 查询处理策略
     *
     * @return List<ImcContractVariableStrategy>
     */
    List<ImcContractVariableStrategy> listStrategy();
}
